(include "class/fixeds/class.inc")

(def-class 'path 'fixeds)
(dec-method :vtable 'gui/path/vtable)
(dec-method :create 'gui/path/create)

(dec-method :vcreate 'gui/path/create :final)

(dec-method :filter_polyline 'gui/path/filter_polyline :static '(r0 r1 r2) '(r0))
(dec-method :filter_polygon 'gui/path/filter_polygon :static '(r0 r1 r2) '(r0))
(dec-method :transform 'gui/path/transform :static '(r0 r1 r2 r3 r4 r5 r6 r7) '(r0))
(dec-method :simplify 'gui/path/simplify :static '(r0 r1 r2 r3) '(r0))

(dec-method :gen_clerp 'gui/path/gen_clerp :static '(r0 r1 r2 r3 r4 r5 r6 r7 r8 r9) '(r0))
(dec-method :gen_arc 'gui/path/gen_arc :static '(r0 r1 r2 r3 r4 r5 r6 r7) '(r0))
(dec-method :gen_quadratic 'gui/path/gen_quadratic :static '(r0 r1 r2 r3 r4 r5 r6 r7 r8) '(r0))
(dec-method :gen_cubic 'gui/path/gen_cubic :static '(r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10) '(r0))

(dec-method :stroke_joints 'gui/path/stroke_joints :static '(r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10) '(r0))
(dec-method :stroke_polylines 'gui/path/stroke_polylines :static '(r0 r1 r2 r3 r4 r5 r6 r7) '(r0))
(dec-method :stroke_polygons 'gui/path/stroke_polygons :static '(r0 r1 r2 r3 r4 r5) '(r0))

(dec-method :lisp_transform 'gui/path/lisp_transform :static '(r0 r1) '(r0 r1))
(dec-method :lisp_simplify 'gui/path/lisp_simplify :static '(r0 r1) '(r0 r1))
(dec-method :lisp_filter 'gui/path/lisp_filter :static '(r0 r1) '(r0 r1))
(dec-method :lisp_gen_quadratic 'gui/path/lisp_gen_quadratic :static '(r0 r1) '(r0 r1))
(dec-method :lisp_gen_cubic 'gui/path/lisp_gen_cubic :static '(r0 r1) '(r0 r1))
(dec-method :lisp_gen_arc 'gui/path/lisp_gen_arc :static '(r0 r1) '(r0 r1))
(dec-method :lisp_stroke_polylines 'gui/path/lisp_stroke_polylines :static '(r0 r1) '(r0 r1))
(dec-method :lisp_stroke_polygons 'gui/path/lisp_stroke_polygons :static '(r0 r1) '(r0 r1))

(def-struct 'path 'fixeds)
(def-struct-end)

(def-enum 'join)
	(enum 'miter 'bevel 'round)
(def-enum-end)

(def-enum 'cap)
	(enum 'butt 'square 'tri 'arrow 'round)
(def-enum-end)
